﻿using UnityEngine;
using System.Collections;

// 敌人发生器
public class Emitter : MonoBehaviour
{
	// 一波敌人的预制件对象
	public GameObject[] waves;
	
	// 现在这一波
	private int currentWave;
	
	// 游戏管理者
	private Manager manager;
	
	// 迭代
	IEnumerator Start ()
	{
		
		// 如果没有波次的话，停止迭代
		if (waves.Length == 0) {
			yield break;
		}
		
		// 从场景中寻找Manager组件对象(耗性能 谨慎使用)
		manager = FindObjectOfType<Manager>();
		
		while (true) {
			
			// 如果游戏结束，直接至下一帧
			while(manager.IsPlaying() == false) {
				yield return new WaitForEndOfFrame ();
			}
			
			// 生成一波敌人
			GameObject g = (GameObject)Instantiate (waves [currentWave], transform.position, Quaternion.identity);
			
			// 将这波敌人的对象父级指为自己
			g.transform.parent = transform;
			
			// Wave子对象(Enemy)在还存在的情况下，待机
			while (g.transform.childCount != 0) {
				yield return new WaitForEndOfFrame ();
			}
			
			// 删除这一波
			Destroy (g);
			
			// 下一波次，波次到达最后一次后开始重置（开始 -> 结束的循环）
			if (waves.Length <= ++currentWave) {
				currentWave = 0;
			}
			
		}
	}
}